<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet" href="./lib/bootstrap.css" />
  <script src="./lib/jquery.js"></script>
</head>

<body style="padding: 15px;">
  <!-- 添加图书的Panel面板 -->
  <div class="panel panel-primary">
    <div class="panel-heading">
      <h3 class="panel-title">添加新图书</h3>
    </div>
    <div class="panel-body form-inline">

      <div class="input-group">
        <div class="input-group-addon">书名</div>
        <input type="text" class="form-control" id="iptBookname" placeholder="请输入书名">
      </div>

      <div class="input-group">
        <div class="input-group-addon">作者</div>
        <input type="text" class="form-control" id="iptAuthor" placeholder="请输入作者">
      </div>

      <div class="input-group">
        <div class="input-group-addon">出版社</div>
        <input type="text" class="form-control" id="iptPublisher" placeholder="请输入出版社">
      </div>

      <button id="btnAdd" class="btn btn-primary">添加</button>

    </div>
  </div>


  <!-- 图书的表格 -->
  <table class="table table-bordered table-hover">
    <thead>
      <tr>
        <th>Id</th>
        <th>书名</th>
        <th>作者</th>
        <th>出版社</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody id="tb"></tbody>
  </table>

  <script>
    $(function () {
      // 1. 封装一个获取图书列表并渲染的函数
      function getBookList() {
        // 发送ajax请求 获取所有的图书数据
        // http://www.liulongbin.top:3006/api/getbooks
        $.get('http://www.liulongbin.top:3006/api/getbooks', res => {
          // console.log(res)
          // 不成功就不执行后面的代码
          if (res.status != 200) return

          let arr = []
          // 遍历图书数据, 动态创建tr > td 并把数据填充进去
          // res.data
          res.data.forEach(item => {
            // 循环一次 创建一个tr  tr中去写td
            // console.log(item)

            arr.push(`
              <tr> 
                <td>${item.id}</td>
                <td>${item.bookname}</td>
                <td>${item.author}</td>
                <td>${item.publisher}</td>
                <td><a class="del" data-id="${item.id}" href="javascript:;">删除</a></td>
            </tr>`)
          })

          console.log(arr.join(''))
          // 循环结束时 数组中装着所有的tr
          // 将tr 添加到 tbody中
          // $('#tb').empty().append(arr.join('')) // 效果一样
          // $('#tb').empty().append(arr) // 效果一样 不使用join()方法  jquery会自动取出所有字符串并拼接设置给DOM元素内部
          $('#tb').empty().html(arr)
        })

      }
      // 2. 页面加载时调用该函数
      getBookList()

      // 删除功能
      // 1. 给每一个删除按钮绑定点击事件(由于删除按钮是动态添加的, 所以需要使用事件代理)
      $('#tb').on('click', '.del', function() {
        // console.log(this)
        // $(this).attr('data-id')
        let id = $(this).data('id')
        // console.log(id)
        // 2. 发送get请求, 将id作为参数传递给服务器
        $.get('http://www.liulongbin.top:3006/api/delbook', { id }, res => {
          if (res.status != 200) return alert('删除失败!')
          
          // 3. 接收服务器的响应数据, 响应成功后重新渲染
          getBookList()

        })
      })

      // 添加功能
      // 1. 给添加按钮绑定点击事件
      $('#btnAdd').click(function () {
        // 2. 非空校验 - 三个文本框
        let bookname = $('#iptBookname').val().trim()
        let author = $('#iptAuthor').val().trim()
        let publisher = $('#iptPublisher').val().trim()

        if (bookname.length === 0 || author.length === 0 || publisher.length === 0) return alert('请检查您输入的内容是否有空')

        // 3. 发送POST请求, 添加图书
        // http://www.liulongbin.top:3006/api/addbook
        // let obj = { bookname: bookname , author: author , publisher: publisher }
        // let obj = { bookname , author , publisher } // ES5的简写形式
        // console.log(obj)
        $.post('http://www.liulongbin.top:3006/api/addbook', { bookname, author, publisher }, res => {
          if (res.status != 201) return alert('添加图书失败!')

          // 4. 添加成功后, 重新渲染页面
          getBookList()

          // 5. 清空三个文本框
          $('#iptBookname').val('')
          $('#iptAuthor').val('')
          $('#iptPublisher').val('')
        })

      })
    })
  </script>
</body>

</html>